/*****************************
 *@file: LinkBullet
 *@author: 陈吕唐
 *@desc: 链接子弹
 *@date: 2024-03-21	09:21
 *****************************/
import { _decorator } from 'cc';
import { BaseCharacter } from '../BaseCharacter';
import GameSingle from '../GameSingle';
import { BaseBullet } from './BaseBullet';
const { ccclass, property } = _decorator;

@ccclass('LinkBullet')
export class LinkBullet extends BaseBullet {
    /****************************************************************************************************************
     *Readonly 常量
     ****************************************************************************************************************/
    /****************************************************************************************************************
     *Property 定义变量
     ****************************************************************************************************************/
    public number: number = 1;
    /***************************************************************
    *PropertyUI 引用的控件
    ***************************************************************/
    /****************************************************************************************************************
     * Lifecycle 生命周期相关方法
     ****************************************************************************************************************/
    /****************************************************************************************************************
     * Public 公有方法
     ****************************************************************************************************************/
    /****************************************************************************************************************
     * private 私有方法
     ****************************************************************************************************************/
    protected override onHit(fight: BaseCharacter): void {
        let monster = GameSingle.single.scene.monsters;
        let array = monster;

        if (array.length > this.number) {
            array = array.sort((a, b) => {
                let lenA = Math.abs(a.node.position.x - fight.node.position.x) + Math.abs(a.node.position.y - fight.node.position.y);
                let lenB = Math.abs(b.node.position.x - fight.node.position.x) + Math.abs(b.node.position.y - fight.node.position.y);
                return lenA - lenB;
            });

            array = array.splice(0, this.number);
        }

        for (let i = 0; i < array.length; i++) {
            const element = array[i];
            this.damage(element);
        }
        /**
         * 回收子弹
         */
        this.recycle();
    }
    /****************************************************************************************************************
     * Property Get && Set 属性的 get && set 函数
     ****************************************************************************************************************/

}


